﻿using System.IO;
using FarmerJoe.Settings;
using Styx.Helpers;

namespace FarmerJoe.ClassSettings
{
    public class WarlockSettings : Styx.Helpers.Settings
    {
        public WarlockSettings() : base(Path.Combine(FpswareSettings.SettingsPath, "Warlock.xml")) { }

        [Setting, DefaultValue(45)]
        public int RestMana { get; set; }

        [Setting, DefaultValue(45)]
        public int RestHealth { get; set; }


        [Setting, DefaultValue("... always")]
        public string CCControlledMovement { get; set; }

        [Setting, DefaultValue("... always")]
        public string CCControlledTargeting { get; set; }

        [Setting, DefaultValue("... always")]
        public string WaitForResSickness { get; set; }

        [Setting, DefaultValue("... always")]
        public string AllowLagTollerance { get; set; }

        [Setting, DefaultValue("... never")]
        public string TimeToDeathCheck { get; set; }

        [Setting, DefaultValue("... never")]
        public string Trinket1 { get; set; }

        [Setting, DefaultValue("... never")]
        public string Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int HealthPotionHealth { get; set; }

        [Setting, DefaultValue(50)]
        public int ManaPotionMana { get; set; }

        [Setting, DefaultValue("... never")]
        public string BurningRush { get; set; }


        [Setting, DefaultValue("... always")]
        public string DarkIntent { get; set; }

        [Setting, DefaultValue("... never")]
        public string ForceFacingTarget { get; set; }


        // Pet Abilities and Spells
        //===================================================================
        [Setting, DefaultValue("... on casters and runners")]
        public string PetAxeToss { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string PetWrathStorm { get; set; }

        [Setting, DefaultValue("... always")]
        public string PetWhiplash{ get; set; }

        [Setting, DefaultValue("... only on casters")]
        public string PetSpellLock{ get; set; }

        [Setting, DefaultValue("... always")]
        public string PetCauterizeMaster { get; set; }

        [Setting, DefaultValue(75)]
        public int PetCauterizeMasterHealth { get; set; }
        //===================================================================



        


        // Demonology
        [Setting, DefaultValue("... automatic")]
        public string DemoPull { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoPullSoulFire { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoPullHandOfGuldan { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoPullCorruption { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoPullShadowBolt { get; set; }

        [Setting, DefaultValue(50)]
        public int DemoDarkRegenerationHealth { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoSoulFire { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoCorruption { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoCorruptionDOTAdds { get; set; }

        [Setting, DefaultValue("... always")]
        public string HandOfGuldan { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoShadowBolt { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoCurseOfTheElements { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string DemoDarkSoul { get; set; }

        [Setting, DefaultValue("... never")]
        public string DemoFelFlame { get; set; }


        [Setting, DefaultValue(40)]
        public int DemoDrainLifeHealth { get; set; }

        [Setting, DefaultValue(45)]
        public int DemoUnendingResolveHealth { get; set; }

        [Setting, DefaultValue(70)]
        public int DemoMortalCoilHealth { get; set; }

        [Setting, DefaultValue(70)]
        public int DemoHealPetHealth{ get; set; }


        // Dark Bargin
        [Setting, DefaultValue("... only on 3+ adds")]
        public string DemoDarkBarginWhen { get; set; }

        [Setting, DefaultValue(80)]
        public int DemoDarkBarginHealth { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string DemoDarkBargin { get; set; }

        // Grimoires
        [Setting, DefaultValue("... only on 3+ adds")]
        public string DemoGrimoireOfService { get; set; }

        [Setting, DefaultValue("Felguard")]
        public string DemoGrimoirePet { get; set; }

        [Setting, DefaultValue("... never")]
        public string DemoGrimoireOfSacrifice { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoSoulLink{ get; set; }

        // Life tap
        [Setting, DefaultValue("... conditional")]
        public string DemoLifeTap{ get; set; }

        [Setting, DefaultValue(45)]
        public int DemoLifeTapMana { get; set; }

        [Setting, DefaultValue(70)]
        public int DemoLifeTapMinHealth { get; set; }

        // Metamorphosis
        [Setting, DefaultValue("... always")]
        public string MetamorphosisWhen { get; set; }

        [Setting, DefaultValue(850)]
        public int MetamorphosisMaxFury { get; set; }

        [Setting, DefaultValue(600)]
        public int MetamorphosisMinFury { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string MetamorphosisImmolationAura { get; set; }

        [Setting, DefaultValue("... always")]
        public string MetamorphosisTouchOfChaos { get; set; }

        [Setting, DefaultValue("... always")]
        public string MetamorphosisDoom { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string MetamorphosisChaosWave { get; set; }




        // Destruction
        [Setting, DefaultValue("... automatic")]
        public string DestructionPull { get; set; }

        [Setting, DefaultValue("... always")]
        public string Immolate { get; set; }

        [Setting, DefaultValue("... always")]
        public string Incinerate { get; set; }

        [Setting, DefaultValue("... always")]
        public string CurseOfTheElements { get; set; }

        [Setting, DefaultValue("... always")]
        public string Shadowburn { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string DarkSoul { get; set; }

        [Setting, DefaultValue("... never")]
        public string DestructionFelFlame { get; set; }

        [Setting, DefaultValue("... only on 3+ adds")]
        public string DestructionRainOfFire { get; set; }

        [Setting, DefaultValue("2")]
        public string ChaosBolt { get; set; }


        [Setting, DefaultValue(40)]
        public int DrainLifeHealth { get; set; }

        [Setting, DefaultValue(60)]
        public int EmberTabHealth { get; set; }

        [Setting, DefaultValue(45)]
        public int UnendingResolveHealth { get; set; }

        [Setting, DefaultValue(70)]
        public int MortalCoilHealth { get; set; }

        [Setting, DefaultValue("... always")]
        public string DemoTwilightWard { get; set; }

        [Setting, DefaultValue("Imp")]
        public string DemoSummonPet { get; set; }


        // Cooldowns
        //
        // Dark Bargin
        [Setting, DefaultValue("... only on 3+ adds")]
        public string DestructionDarkBarginWhen { get; set; }

        [Setting, DefaultValue(80)]
        public int DestructionDarkBarginHealth { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string DestructionDarkBargin { get; set; }
        
        // Sacrificial Pact
        [Setting, DefaultValue("... only on adds")]
        public string DestructionSacrificialPactWhen { get; set; }

        [Setting, DefaultValue(70)]
        public int DestructionSacrificialPactHealth { get; set; }

        [Setting, DefaultValue(50)]
        public int DestructionSacrificialPactMinPetHealth { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string DestructionSacrificialPact { get; set; }

        // Grimoires
        [Setting, DefaultValue("... only on 3+ adds")]
        public string DestructionGrimoireOfService { get; set; }

        [Setting, DefaultValue("... never")]
        public string DestructionGrimoireOfSacrifice { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string DestructionDarkSoul{ get; set; }

        // Fire and Brimstone
        [Setting, DefaultValue("... conditional")]
        public string FireAndBrimstone { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string FireAndBrimstoneWhen { get; set; }

        [Setting, DefaultValue("1")]
        public string FireAndBrimstoneBurningEmberCount { get; set; }

        [Setting, DefaultValue("... always")]
        public string DestructionHavoc { get; set; }

        [Setting, DefaultValue("... always")]
        public string DestructionTwilightWard { get; set; }

        [Setting, DefaultValue("Imp")]
        public string DestructionSummonPet{ get; set; }

        [Setting, DefaultValue(75)]
        public int DestructionHealthFunnel{ get; set; }

        [Setting, DefaultValue("... always")]
        public string DestructionSoulLink { get; set; }

        [Setting, DefaultValue(50)]
        public int DestructionDarkRegenerationHealth{ get; set; }

        [Setting, DefaultValue("Imp")]
        public string DestructionGrimoirePet { get; set; }

        // Affliction

        [Setting, DefaultValue("... automatic")]
        public string AfflictionPull { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionPullSoulburnSoulSwap { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionPullCorruption { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionPullUnstableAffliction{ get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionPullHaunt{ get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionPullMaleficGrasp { get; set; }

        // Grimoires
        [Setting, DefaultValue("... only on 3+ adds")]
        public string AfflictionGrimoireOfService { get; set; }

        [Setting, DefaultValue("... never")]
        public string AfflictionGrimoireOfSacrifice { get; set; }

        [Setting, DefaultValue("... only on adds")]
        public string AfflictionDarkSoul { get; set; }

        [Setting, DefaultValue("Voidwalker")]
        public string AfflictionSummonPet { get; set; }

        [Setting, DefaultValue("... only in combat")]
        public string AfflictionSoulburnSummon { get; set; }

        // Dark Bargin
        [Setting, DefaultValue("... only on 3+ adds")]
        public string AfflictionDarkBarginWhen { get; set; }

        [Setting, DefaultValue(80)]
        public int AfflictionDarkBarginHealth { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string AfflictionDarkBargin { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionSoulLink { get; set; }

        [Setting, DefaultValue(80)]
        public int AfflictionHealPetHealth { get; set; }


        [Setting, DefaultValue(40)]
        public int AfflictionDrainLifeHealth { get; set; }

        [Setting, DefaultValue(45)]
        public int AfflictionUnendingResolveHealth { get; set; }

        [Setting, DefaultValue(70)]
        public int AfflictionMortalCoilHealth { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionTwilightWard { get; set; }

        // Life tap
        [Setting, DefaultValue("... conditional")]
        public string AfflictionLifeTap { get; set; }

        [Setting, DefaultValue(45)]
        public int AfflictionLifeTapMana { get; set; }

        [Setting, DefaultValue(70)]
        public int AfflictionLifeTapMinHealth { get; set; }


        // Drain Soul
        [Setting, DefaultValue("... conditional")]
        public string AfflictionDrainSoul { get; set; }

        [Setting, DefaultValue(30)]
        public int AfflictionDrainSoulFinisherHealth { get; set; }

        [Setting, DefaultValue("0")]
        public string AfflictionDrainSoulCombatMinShards { get; set; }

        [Setting, DefaultValue("1")]
        public string AfflictionDrainLifeSoulburnMinShards { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionDrainLifeSoulburn { get; set; }




        [Setting, DefaultValue("... always")]
        public string AfflictionMaleficGrasp { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionCurseOfTheElements { get; set; }
        
        [Setting, DefaultValue("... only on 3+ adds")]
        public string AfflictionCurseOfTheElementsSoulburnAdds { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionCorruption { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionCorruptionAdds { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionAgony { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionAgonyAdds { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionUnstableAffliction { get; set; }

        [Setting, DefaultValue(40)]
        public int AfflictionUnstableAfflictionMinHealth { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionUnstableAfflictionAdds { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionHaunt { get; set; }

        [Setting, DefaultValue(40)]
        public int AfflictionHauntMinHealth { get; set; }

        [Setting, DefaultValue("... never")]
        public string AfflictionHauntAdds { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string AfflictionSeedOfCorruption { get; set; }

        [Setting, DefaultValue("... only on 3+ adds")]
        public string AfflictionSeedOfCorruptionWhen { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionSeedOfCorruptionSoulburn { get; set; }

        [Setting, DefaultValue("... conditional")]
        public string AfflictionSoulSwap { get; set; }

        [Setting, DefaultValue("... always")]
        public string AfflictionSoulSwapSoulburn { get; set; }

        [Setting, DefaultValue("... never")]
        public string AfflictionFelFlame { get; set; }

        [Setting, DefaultValue(50)]
        public int AfflictionDarkRegenerationHealth { get; set; }

        [Setting, DefaultValue("... medium")]
        public string AfflictionDrainLifePriority{ get; set; }

        [Setting, DefaultValue("Imp")]
        public string AfflictionGrimoirePet { get; set; }

        /*
        [Setting, DefaultValue("... always")]
        public string Affliction { get; set; }
         */

        
        
    }
}
